package cn.edu.wynu.oop.permission;

public class Student {
    public String name; //公共权限,可以在任意类中访问
    private String id; // 身份证号 私有权限，只能在同一个类中访问

    // 访问控制权限： 类的成员（属性/方法/构造器）可以被访问的范围
    // 1. 公共权限（public）： 可以被任何类访问
    // 2. 私有权限（private）： 只能被同一个类中的方法访问

    // 由于私有属性 id 只能在同一个类里面访问,为了使外面的类也可以使用这个属性,
    // 会提供公共方法用于访问

    public String getId() {
        // 解密返回身份证号
        // 只有本人可以访问身份证号
        return id;
    }

    /**
     * 通过setId方法暴露给外界,可以做到保护隐私,封装复杂校验逻辑
     * 加密存储等功能,程序更安全,使用者使用更简单
     * @param id 身份证号
     */
    public void setId(String id) {
        // 身份证号只能是18位
        if (id.length() != 18) {
            System.out.println("身份证号必须是18位");
            return;
        }
        // 验证必须是本人才可以访问身份证号
        // 加密存储身份证号
        this.id = id; // this 代指之后new出来的对象本身;可以调用对象的属性和方法
    }
}
